install -d -m 770 -o backup -g backup \
~backup/snapshot/mysql
-trap_exit () {
- errno=$?
- test $errno = 0 ||
- cat >&2 <<-EOF
- ERROR: $0 "$database" "$@"
- EOF
- #return $errno
- }
-trap trap_exit EXIT
-
+errno=0
while IFS='' read -r database
- do
+ do {
test "${database:+set}"
- test ! -e ~backup/snapshot/mysql/$database
- # NOTE: soit une sauvegarde est déjà en cours,
- # soit une précédente a échoué.
+ if test -e ~backup/snapshot/mysql/$database
+ then
+ cat >&2 <<-EOF
+ ERROR: soit une sauvegarde est déjà en cours, soit une précédente a échoué.
+ EOF
+ false
+ fi
can_hotcopy=yes
while IFS=' ' read -r table engine
do
esac
done <<-EOF
$(mysql -u backup --batch --skip-column-names <<-EOF
- SELECT table_name,engine
- FROM information_schema.tables
- WHERE table_schema = '$database';
- EOF
+ SELECT table_name,engine
+ FROM information_schema.tables
+ WHERE table_schema = '$database';
+ EOF
)
EOF
case $can_hotcopy in
eval "$@"
rm -rf \
~backup/snapshot/mysql/"$database"
+ } || {
+ errno=$?
+ cat >&2 <<-EOF
+ ERROR: $0 "$database" "$@"
+ EOF
+ if test "${database:+set}"
+ then rm -rf ~backup/snapshot/mysql/"$database"
+ fi
+ }
done <<-EOF
$(mysql -u backup --batch --skip-column-names <<-EOF
SELECT schema_name
EOF
)
EOF
+exit $errno
install -d -m 770 -o backup -g backup \
~backup/snapshot/postgresql
-trap_exit () {
- errno=$?
- test $errno = 0 ||
- cat >&2 <<-EOF
- ERROR: $0 "$database" "$@"
- EOF
- #return $errno
- }
-trap trap_exit EXIT
-
+errno=0
while IFS=' \r' read -r database
- do
+ do {
test "${database:+set}"
- test ! -e ~backup/snapshot/postgresql/"$database"
- # NOTE: soit une sauvegarde est déjà en cours,
- # soit une précédente a échoué.
+ if test -e ~backup/snapshot/postgresql/$database
+ then
+ cat >&2 <<-EOF
+ ERROR: soit une sauvegarde est déjà en cours, soit une précédente a échoué.
+ EOF
+ false
+ fi
install -d -m 770 -o backup -g backup \
~backup/snapshot/postgresql/"$database"
psql --quiet "$database" -c "VACUUM (ANALYSE);"
eval "$@"
rm -rf \
~backup/snapshot/postgresql/"$database"
+ } || {
+ errno=$?
+ cat >&2 <<-EOF
+ ERROR: $0 "$database" "$@"
+ EOF
+ if test "${database:+set}"
+ then rm -rf ~backup/snapshot/postgresql/"$database"
+ fi
+ }
done <<-EOF
$(psql --quiet --tuples-only postgres <<-EOF || exit 1
\set ON_ERROR_STOP on
EOF
)
EOF
+exit $errno